/**
 * Affix 组件的主题配置
 * 
 * 基于企业级设计规范 (Affix.json) 的完整配置
 * 固钉组件样式定义
 */

import type { ComponentToken } from 'antd/es/affix/style';

// ========== 设计 Token 常量 ==========

/**
 * 层级相关 Token
 */
const Z_INDEX_TOKENS = {
  popup: 10,
} as const;

/**
 * Affix 完整主题配置
 * 
 * 根据设计规范文件 Affix.json 定义的固钉组件样式
 * 
 * @example
 * ```tsx
 * <ConfigProvider theme={{ components: { Affix: affixThemeConfig } }}>
 *   <Affix offsetTop={10}>
 *     <Button>固定在顶部</Button>
 *   </Affix>
 * </ConfigProvider>
 * ```
 */
export const affixThemeConfig: Partial<ComponentToken> = {
  // ========== 层级配置 ==========
  zIndexPopup: Z_INDEX_TOKENS.popup,
};

/**
 * 获取固钉主题配置
 * 
 * @param customConfig 自定义配置（可选）
 * @returns 合并后的主题配置
 * 
 * @example
 * ```tsx
 * const myAffixTheme = getAffixTheme({
 *   zIndexPopup: 100,
 * });
 * 
 * <ConfigProvider theme={{ components: { Affix: myAffixTheme } }}>
 *   <Affix><Button>固定按钮</Button></Affix>
 * </ConfigProvider>
 * ```
 */
export const getAffixTheme = (
  customConfig?: Partial<ComponentToken>
): Partial<ComponentToken> => {
  return {
    ...affixThemeConfig,
    ...customConfig,
  };
};

/**
 * 导出 Affix 组件的 Token 类型
 */
export type { ComponentToken as AffixComponentToken } from 'antd/es/affix/style';

